package com.kaifamiao.demo.d0809.ex;

public class Demo {

    public static void main(String[] args) {
        /**
         * 异常体系
         *
         *  try{ } 中的代码产生异常后，并且异常的类型和 catch 中的异常匹配时，会执行相应的 catch 块代码
         *
         *  try-catch 块执行结束的标志：
         *     1. try 块中的代码正常执行完
         *     2. try 块中产生了异常， 异常产生的代码后边的所有代码都不会被执行了。
         *      去 catch 中匹配异常, 匹配上执行相应的代码块。 匹配不上 结束执行
         *  finally 表示 try 块中最终要执行的部分
         */

//        try {
//            Class.forName("abc");
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }

        try{
            String str = "java是世界上最好的编程语言";
            str = null;
            System.out.println(str.length());
//            double index = 3.0 / 0;
//            System.out.println(index);
        } catch (ArithmeticException e){
            System.err.println("产生了算术异常");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (NullPointerException e){
            System.err.println("空指针异常");
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
            System.out.println("Exception");
        } finally { // 无论是否有异常都会被执行
            System.out.println("finally");
        }


        System.out.println("end");
    }
}
